package cloud.maque.admin.service;

import cloud.maque.admin.domain.entity.MqXzq;
import cloud.maque.admin.domain.request.MqXzqQueryRequest;
import cloud.maque.admin.domain.response.MqXzqTree;
import cloud.maque.framework.common.request.PaginateDataResquest;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 4color
 * @description 行政区表服务层
 * @date 2023-03-17
 */
@Service
public interface MqXzqService extends IService<MqXzq> {


    /**
     * 插入一条记录
     *
     * @param xzq 记录对象
     * @return 是否成功
     */
    MqXzq insert(MqXzq xzq);


    /**
     * 获取行政区树
     *
     * @param parentcode 父级代码
     * @param isnew      是否最新
     * @param getchild   是否获取子级点
     * @param haveself   是否包含自身
     * @return
     */
    List<MqXzqTree> xzqTree(String parentcode, String isnew, Boolean getchild, String haveself, Boolean fromredis);


    /**
     * 获取行政区列表
     */
    PageInfo<List<MqXzqTree>> listByPage(PaginateDataResquest<MqXzqQueryRequest> queryRequest);


    /**
     * 获取行政区
     *
     * @param xzqId
     * @return
     */
    MqXzq DetailById(String xzqId);

    /**
     * 获取行政区
     *
     * @param xzqCode 行政区代码
     * @return
     */
    MqXzq DetailByCode(String xzqCode);

    /**
     * 保存行政区
     *
     * @param xzq
     * @return
     */
    MqXzq Save(MqXzq xzq);

    /**
     * 删除行政区
     *
     * @param xzqId
     * @return
     */
    Boolean Delete(String xzqId);

    Boolean ClearCache();


}
